Some of the best articles I read end up here. I believe this curated collection will level up your knowledge and skills.
How Lyft Support Rides to 21 Million Users It’s fascinating how much thinking is involved into the design of services we consider mandane and essential to our day-to-day lives. I don’t know a lot about geospatial search and other problems involving maps. This article allowed me to glimpse at things happening under the hood when navigating on map or estimating ETAs of the rides.
How Tinder Scaled to 1.6 Billion Swipes per Day It’s fascinating how much thinking is involved into the design of services we consider mandane and essential to our day-to-day lives. I don’t know a lot about geospatial search and other problems involving maps. This article allowed me to glimpse at things happening under the hood when navigating on map or estimating ETAs of the rides.
Everything You Need to Know About Micro Frontends Over the last years micro-forntends has become a popular topic. It’s a logical next step in the micro-service architecture. When implementing the application leveraging micro-frontends you’ll face the same issues and stick to the same approaches as with micro-services in general.
WebSockets vs Server-Sent-Events vs Long-Polling vs WebRTC vs WebTransport If you ever wondered what is the difference between WebSockets, Server-Sent-Events, Long-Polling, WebRTC and WebTransport this article is for you. Really good high level overview of different techniques to initiate data submission from server to clients.
Modularizing React Applications with Established UI Patterns Headless components is a hot topic right now. There are many libraries around providing unstyled components with encapsulated logic and behaviour. One of the most popular ones sticking to this architectural approach is shadcn/ui. Author of the article doesn’t talk about specific libraries but shows the way of extracting business logic and domain model of your own application to achieve the same.
How Zapier Automates Billions of Tasks A brief overview of technologies Zapier uses to automate things on scale. It’s not an extensive read, but I’m always interested in seeing the building blocks used by popular services under the hood.
Fairness in multi-tenant systems Provides an extensive deep dive into how AWS deals with bursts in traffic load. Different strategies helping to alleviate the pressure on servers when the load increases are discussed int the article. AWS Api Gateway, WAF, Load Balancer and CloudFront can all be used to balance the load on server and deal with anomalies.
Gossip Protocol Explained How to effectively distribute the message to all the notes in large scale distributed systems? How to avoid the situation when single node is a bottleneck when it comes to message sending? Answers to those questions can be found in this write where author explores different methods of message broadcast in high scale systems. The gossip protocol is one of the fundamental building blocks in systems like AWS S3, AWS DynamoDB, Redis etc.
Latency versus Response Time Short explanation of the important concept in system design - latency. And why you shouldn’t use terms response time and latency interchangeably.
Consistent Hashing Algorithm There are multiple strategies and techniques helping you organize caching in distributed system. Among them one of the most powerful is Consistent Hashing. It allows horizontal scaling and minimizes data movement when number of nodes change. This concept is used in many modern data storage solutions and is very easy to understand.
Microservice architecture style As we mentioned microfrontends above I think it would be good to revisit microservices to understand they pros and cons. Both approaches are designed to solve similar problems but they are also pretty different and face unique challenges. When using microfrontends we need to be careful with packaging so the end user would not need to download the same dependency again and again. This issue simply does not exist in the context of microservices.
The ecstasy and the agony of caches Caching is a great tool when you want to improve request latency or reduce costs. But without giving enough thought when introducing cache it can set your service up for disaster. The author explains the benefits and challenges of caching they experienced in the course of building and operating services at Amazon. How to mitigate the risk of failing cache and design services not addicted to cache are two major questions answered here.
Workload isolation using shuffle-sharding Author uncovers an important topic in any distributed system - DNS. It’s one of the most critical pieces of infrastructure that can put the entire system down when misconfigured or malfunctioning. Protecting it from DDoS attacks isn’t an easy task and AWS team had to invent so called “Shuffle Sharding” in order to provide cheap and scalable way of doing it for the customers.
A Distributed Systems Reading List A bunch of system design concepts collected into one document. I liked it because it has simple and short explanation of what each thing does and what problem it solves. Too often things are explained through extensive writing and rarely in simple and easily digestible way. I’d like to be able to express my thoughts about complex topics in such concise and clear way.